﻿// 801 走路.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <memory.h>

using namespace std;
/*

http://oj.daimayuan.top/course/5/problem/254
蜗蜗的世界里有 n个城市，城市之间通过 m条单向高速公路连接，初始他在 1 号城市。
蜗蜗想去 n号城市游玩，假设现在他在 x 号城市，他会等概率地选择从 x出发的高速公路中的一条走过去。
 如果没有任何从 x号城里出发的高速公路，他就只能留在原地了。蜗蜗会一直走直到他无路可走。

请问蜗蜗有多大的概率能够走到 n号城市。

输入格式
第一行两个整数 n,m。

接下来 m行，每行两个整数 x,y(1≤x<y≤n)
 描述一条从 x号城市到 y号城市的高速公路。

数据保证没有任何两条高速公路的 x,y 是相同的。

注意，数据没有保证 1 号城市一定能走到 n号城市。

输出格式
一行一个整数表示答案。相对误差或绝对误差在 1e-6 内即为正确。

样例输入
3 2
1 2
1 3
样例输出
0.5000000000
数据范围
对于100%
的数据，2≤n≤100,1≤m≤1000。
*/

int n, m;
vector<int> c[101];
double f[101];


int main()
{
	scanf("%d%d",&n,&m);
	for (int i = 1; i <= m; i++) {
		int x, y;
		scanf("%d%d",&x,&y);
		c[x].push_back(y);
	}
	memset(f, 0, sizeof f);
	f[1] = 1;
	for (int i = 1; i < n; i++) {
		int l = c[i].size();
		for (int j = 0; j < l; j++)
			f[c[i][j]] += f[i] / l;
	}
	printf("%.10f\n",f[n]);
	return 0;
}

 